﻿using System;

namespace _21_匿名方法_委托与事件
{
    class Program
    {
        static void Main(string[] args)
        {
            Test td = null;
            td += delegate (double x, double y)
            {
                Console.WriteLine($"{x}+{y}={x + y}");
            };
            td += delegate (double x, double y)
            {
                Console.WriteLine($"{x}-{y}={x - y}");
            };
            td += delegate (double x, double y)
              {
                  Console.WriteLine($"{x} x {y}={x * y}");
              };

            td(0.3d, 0.2d);

            /*

            Java中的简单浮点数类型float和double不能够进行运算，因为大多数情况下是正常的，但是偶尔会出现如上所示的问题。这个问题其实不是JAVA的bug，因为计算机本身是二进制的，而浮点数实际上只是个近似值，所以从二进制转化为十进制浮点数时，精度容易丢失，导致精度下降。

　　要保证精度就要使用BigDecimal类，而且不能直接从double直接转BigDecimal，要将double转string再转BigDecimal。也就是不能使用BigDecimal(double val) 方法，你会发现没有效果。要使用BigDecimal(String val) 方法。具体例子如下所示。
        https://www.cnblogs.com/pcheng/p/5588652.html
            */
        }
    }

    //定义一个委托
    delegate void Test(double f, double g);
}
